#define _CRT_SECURE_NO_WARNINGS
#include"Stack.h"
#include"Queue.h"
#include<queue>

namespace ganyu
{
	void test1()
	{
		Stack<int> s1;
		s1.push(1);
		s1.push(2);
		s1.push(3);
		s1.pop();
		s1.push(4);
		s1.push(5);
		s1.pop();
		cout << s1.top() << endl;
	}

	void test2()
	{
		Queue<int> s1;
		
		s1.push(1);
		s1.push(2);
		s1.push(3);
		s1.pop();
		s1.push(4);
		s1.push(5);
		s1.pop();
		cout << s1.front() << endl;
		cout << s1.back() << endl;
	}
}

//int main()
//{
//	ganyu::test2();
//
//	return 0;
//}

//int main()
//{
//	int ar[] = { 1,2,3,4,0,5,6,7,8,9 };
//	int n = sizeof(ar) / sizeof(int);
//	vector<int> v(ar, ar + n);
//	vector<int>::iterator it = v.begin();
//
//	while (it != v.end())
//	{
//		if (*it != 0)
//			cout << *it;
//		else
//			v.erase(it);
//		it++;
//	}
//	return 0;
//
//}



//int main()
//{
//	int ar[] = { 0,1, 2, 3, 4,  5, 6, 7, 8, 9 };
//	int n = sizeof(ar) / sizeof(int);
//	list<int> mylist(ar, ar + n);
//	list<int>::iterator pos = find(mylist.begin(), mylist.end(), 5);
//	reverse(mylist.begin(), pos);
//	reverse(pos, mylist.end());
//	list<int>::const_reverse_iterator crit = mylist.crbegin();
//	while (crit != mylist.crend())
//	{
//		cout << *crit << " ";
//		++crit;
//	}
//	cout << endl;
//
//}



//int main()
//{
//    priority_queue<int> a;
//
//    for (int i = 0; i < 5; i++)
//    {
//        a.push(i);
//    }
//
//    while (!a.empty())
//    {
//        cout << a.top() << ' ';
//        a.pop();
//
//    }
//
//    return 0;
//}


int main()
{
    priority_queue<int> a;
    priority_queue<int, vector<int>, greater<int> > c;
    priority_queue<string> b;

    for (int i = 0; i < 5; i++)
    {
        a.push(i);
        c.push(i);
    }

    while (!a.empty())
    {
        cout << a.top() << ' ';
        a.pop();
    }

    cout << endl;
    while (!c.empty())
    {
        cout << c.top() << ' ';
        c.pop();
    }

    cout << endl;
    b.push("abc");
    b.push("abcd");
    b.push("cbd");

    while (!b.empty())
    {
        cout << b.top() << ' ';
        b.pop();
    }

    cout << endl;
    return 0;
}